package kjh820909.basic;

public class J21_String {

	public static void main(String[] args) {
		// 문자열 클래스 다루기
		// 주민번호를 이용해서 성별 확인
		// 9 : 남자
		// 8 : 여자
		String jumin ="123456-9876543";
		
		System.out.println(
				"문자열 길이: " + jumin.length());
		System.out.println(
				"성별문자: " + jumin.charAt(7));
		System.out.println(
				"성별문자: " + jumin.substring(7));
		System.out.println(
				"성별문자: " + jumin.substring(7, 8));
		
		String msg = "hello";
		if(msg == "hello")
			System.out.println("일치함!");
		else
			System.out.println("일치안함!");
		String msg2 = "hello";
		if(msg == msg2)
			System.out.println("일치함!");
		else
			System.out.println("일치안함!");
		
		String msg3 = new String("Java");
		String msg4 = new String("Java");
		if(msg3 == msg4)
			System.out.println("일치함!");
		else
			System.out.println("일치안함!");
		// msg3과 msg4가 메모리에 생성된 위치(주소)가 다름
		// String 객체 비교시 == 연산자는
		// 참조된 주소의 동질성을 확인함
		
		// msg(리터럴)와 msg3 비교
		String msg5 = new String("hello");
		if(msg == msg5)
			System.out.println("일치함!");
		else
			System.out.println("일치안함!");
		// msg과 msg5는 메모리에 생성된 위치(주소)가 다름
		// == 연산자로 비교해보면 '불일치'로 출력
		
		
		// 문자열 객체의 값을 비교할 때에는
		// == 연산자 대신에 equals 메서드를 사용해야 함
		if(msg3.equals(msg4))
			System.out.println("일치!");
		else
			System.out.println("불일치!");
		
		if(msg.equals(msg5))
			System.out.println("일치!");
		else
			System.out.println("불일치!");
		
		
		// 문자열 연결시 + 연산자를 사용하면
		// 필요없는 객체 생성이 동반되어
		// 메모리 사용율과 CPU 자원이 소모가 커짐
		// 따라서, StringBulider 나 StringBuffer를
		// 사용할 것을 추천!
		String sql ="update BookDB " +
		"set title=?, publish=?, author=?, " +
		" regdate = sysdate "+
		" where id = ?";
		
		StringBuilder sql2 = new StringBuilder();
		sql2.append(" update BookDB ")
			.append(" set title=?,publish=?,author=?, ")
			.append(" regdate = sysdate ")
			.append(" where id = ? ");
		
		System.out.println(sql2); 			  // 자동 형변환
		String tmp = sql2.toString();		  // 수동형변환
		System.out.println(tmp);
		
		
		
	}

}
